﻿using BLL;
using DAL;
using MODEL;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Loginter.登录用户信息
{
    public partial class Login : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected void btn_login_Click(object sender, EventArgs e)
        {
            #region 三层架构.连线式
            UserBLL man = new UserBLL();
            CurrenUser user = man.GetUserInfo(txt_name.Text, txt_password.Text);
            if (user != null)
            {
                Session["userInfo"] = user.UserID;
                Response.Redirect("../系统维护/XiTongWeiHu.aspx");
            }
            else
            {
                labInfo.Visible = true;
                labInfo.Text = "您输入的账户或者密码有误，请重新输入！";
            }
            #endregion

            #region 三层架构用户信息登录
            ////账户
            //string name = txtName.Text.Trim();
            ////密码
            //string pwad = txtPwad.Text;
            ////调用BLL层中的GetUserAll方法将参数传递，MODEL层中的CurrenUser赋一个对象
            //CurrenUser user = UserBLL.GetUserAll(name, pwad);
            ////判断MODEL层的赋值的对象是否为空，若不为空则获取id中的值进行跳转
            //if (user != null)
            //{
            //    Session["ID"] = user.UserID;
            //    Response.Redirect("系统管理.aspx");
            //}
            ////若是为空则提示信息有误
            //else
            //{
            //    labInfo.Visible = true;
            //    labInfo.Text = "您输入的账户或者密码有误，请重新输入！";
            //}
            #endregion

            #region 封装DBhelper调用.SqlDataReader连线式查询
            ////账户
            //string name = txtName.Text.Trim();
            ////密码
            //string pwad = txtPwad.Text;
            ////声明SQL语句，参数化查询
            //string sql = "SELECT * FROM dbo.[User] where Account=@Account and Password=@Password";
            ////参数
            //SqlParameter[] pams = {
            //    new SqlParameter("@Account",name),
            //    new SqlParameter("@Password",pwad)
            //};

            ////连线式查询，调用DBhelper类中方法
            //using (SqlDataReader reader = DBhelper.ExecuteReader(sql, pams))
            //{
            //    //如果游标有数据行，说明根据账户名和密码查询到了数据，登录成功
            //    if (reader.HasRows)
            //    {
            //        //登录成功后，执行下一条记录，获取登录用户的数据
            //        if (reader.Read())
            //        {
            //            //session根据id进行传值
            //            Session["UserInfo"] = Convert.ToInt32(reader["UserID"]);
            //            Response.Redirect("系统管理.aspx");
            //        }
            //    }
            //    else
            //    {
            //        labInfo.Visible = true;
            //        labInfo.Text = "输入的账号或密码有误，请重新输入！";
            //    }
            //}
            #endregion

            #region 封装DBheleper调用.SqlDataAdapter离线式查询
            ////账户
            //string name = txtName.Text.Trim();
            ////密码
            //string pwad = txtPwad.Text;

            ////声明sql语句,参数化查询
            //string select = "select * from dbo.[User] where Account=@Account and Password=@Password";

            //SqlParameter[] pams = {
            //    new SqlParameter("@Account", name),
            //    new SqlParameter("@Password", pwad)
            //};
            ////调用DBhelper信息
            //using (DataTable table = DBhelper.SqlDataAdapter(select, pams))
            //{
            //    //如果DataTable中的行数大于0，则与账户和密码匹配
            //    if (table.Rows.Count > 0)
            //    {
            //        //获取第一行数据
            //        DataRow row = table.Rows[0];
            //        //session传值，id进行
            //        Session["UserInfo"] = Convert.ToInt32(row["UserID"]);
            //        //跳转到系统管理页面
            //        Response.Redirect("系统管理.aspx");
            //    }
            //    else
            //    {
            //        labInfo.Visible = true;
            //        labInfo.Text = "输入的账号或密码有误，请重新输入！";
            //    }
            //}
            #endregion

            #region 封装式传值.内连接
            //string name = txtName.Text.Trim();
            //string pwad = txtPwad.Text;

            ////声明数据库连接对象
            //string StrCon = "Data Source=.;Initial Catalog=master;Integrated Security=True";

            ////声明sql语句,参数化查询
            //string select = "select * from dbo.[User] as u inner join dbo.Role as r on u.FK_RoleID=r.RoleID where Account=@Account and Password=@Password";

            //SqlParameter[] pams = {
            //    new SqlParameter("@Account", name),
            //    new SqlParameter("@Password", pwad)
            //};
            ////创建sqlconnection对象
            //using (SqlConnection con = new SqlConnection(StrCon))
            //{
            //    //创建sqlcommand
            //    using (SqlCommand com = new SqlCommand(select, con))
            //    {
            //        //AddRange是指多个对象
            //        com.Parameters.AddRange(pams);

            //        //打开连接
            //        con.Open();
            //        //连线式访问数据库
            //        using (SqlDataReader reader = com.ExecuteReader())
            //        {
            //            //如果游标有数据行，说明根据用户名和密码查询到了数据，登录成功
            //            if (reader.HasRows)
            //            {
            //                //Read()进行下一条记录,使游标前进一行，拿到登录用户的数据行
            //                if (reader.Read())
            //                {
            //                    //实例化类的形式
            //                    CurrenUser cure = new CurrenUser();
            //                    cure.UserID = Convert.ToInt32(reader["UserID"]);
            //                    //接收数据库的姓名
            //                    cure.UserName = reader["UserName"].ToString();
            //                    //接收数据库的性别，三元运算符：判断性别是男是女，为0是男
            //                    cure.Sex = Convert.ToInt32(reader["Sex"]) == 0 ? "男" : "女";
            //                    //接收数据库的角色
            //                    cure.RoleName = reader["RoleName"].ToString();
            //                    //接收数据库的电话
            //                    cure.Phone = reader["Phone"].ToString();
            //                    //接收数据库的邮箱
            //                    cure.Email = reader["Email"].ToString();
            //                    //接收类的信息，以便传值
            //                    Session["UserInfo"] = cure;
            //                    //跳转到系统管理页面
            //                    Response.Redirect("系统管理.aspx");
            //                }
            //            }
            //            else
            //            {
            //                labInfo.Visible = true;
            //                labInfo.Text = "输入的账号或密码有误，请重新输入！";
            //            }
            //            con.Close();
            //        }
            //    }
            //}
            #endregion

            #region 连线式用户信息.左连接
            //string name = txtName.Text.Trim();
            //string pwad = txtPwad.Text;

            ////声明数据库连接对象
            //string StrCon = "Data Source=.;Initial Catalog=master;Integrated Security=True";

            ////声明sql语句,参数化查询
            //string select = "SELECT * FROM Role INNER JOIN [User] ON Role.RoleID = [User].FK_RoleID where Account=@Account and Password=@Password";

            //SqlParameter[] pams = {
            //    new SqlParameter("@Account",name),
            //    new SqlParameter("@Password",pwad)
            //};
            ////创建sqlconnection对象
            //using (SqlConnection con = new SqlConnection(StrCon))
            //{
            //    //创建sqlcommand
            //    using (SqlCommand com = new SqlCommand(select, con))
            //    {
            //        //AddRange是指多个对象
            //        com.Parameters.AddRange(pams);

            //        //打开连接
            //        con.Open();
            //        //连线式访问数据库
            //        using (SqlDataReader reader = com.ExecuteReader())
            //        {
            //            //如果游标有数据行，说明根据用户名和密码查询到了数据，登录成功
            //            if (reader.HasRows)
            //            {
            //                //Read()进行下一条记录,使游标前进一行，拿到登录用户的数据行
            //                if (reader.Read())
            //                {
            //                    string userName = reader["UserName"].ToString();
            //                    Session["Name"] = userName;
            //                    int userSex = Convert.ToInt32(reader["Sex"]);
            //                    Session["UserSex"] = userSex;

            //                    string userRole = reader["RoleName"].ToString();
            //                    Session["Role"] = userRole;

            //                    string userPhone = reader["Phone"].ToString();
            //                    Session["UserPhone"] = userPhone;

            //                    string userEmail = reader["Email"].ToString();
            //                    Session["UserEmail"] = userEmail;

            //                    Response.Redirect("系统管理.aspx");
            //                }
            //            }
            //            else
            //            {
            //                labInfo.Visible = true;
            //                labInfo.Text = "输入的账号或密码有误，请重新输入！";
            //            }
            //            con.Close();
            //        }
            //    }
            //}
            #endregion

            #region Login.登录页面离线式查询
            ////获取用户名和密码
            //string name = txtName.Text.Trim();
            //string pwad = txtPwad.Text;

            ////声明数据库连接对象
            //string StrCon = "Data Source=.;Initial Catalog=master;Integrated Security=True";

            ////声明sql语句,参数化查询
            //string select = "select * from dbo.[User] where Account=@Account and Password=@Password";

            //SqlParameter[] pams = {
            //    new SqlParameter("@Account",name),
            //    new SqlParameter("@Password",pwad)
            //};
            ////创建SqlDataAdapter适配器
            //using (SqlDataAdapter data = new SqlDataAdapter(select, StrCon))
            //{
            //    data.SelectCommand.Parameters.AddRange(pams);
            //    //实例化DataTable对象
            //    DataTable table = new DataTable();
            //    //在DataTable中填充数据
            //    data.Fill(table);
            //    //如果DataTable中的行数大于0，则与账户名和密码匹配
            //    if (table.Rows.Count > 0)
            //    {
            //        //获取第一行数据
            //        DataRow row = table.Rows[0];
            //        //根据名字执行所对应的的数据
            //        string userName = row["UserName"].ToString();
            //        Session["UserName"] = userName;
            //        Response.Redirect("开票界面.aspx");
            //    }
            //    else
            //    {
            //        labInfo.Visible = true;
            //        labInfo.Text = "输入的账号或密码有误，请重新输入！";
            //    }
            //}
            #endregion

            #region Login.登录页面.ExecuteReader连线式数据查询
            ////获取用户名和密码
            //string name = txtName.Text.Trim();
            //string pwad = txtPwad.Text;

            ////声明数据库连接对象
            //string StrCon = "Data Source=.;Initial Catalog=master;Integrated Security=True";

            ////声明sql语句
            //string select = "select * from [User] where Account=@Account and Password=@Password";

            //SqlParameter[] pams = {
            //    new SqlParameter("@Account",name),
            //    new SqlParameter("@Password",pwad)
            //};

            ////创建sqlconnection对象
            //using (SqlConnection con = new SqlConnection(StrCon))
            //{
            //    //创建sqlcommand
            //    using (SqlCommand com = new SqlCommand(select, con))
            //    {
            //        //AddRange是指多个对象
            //        com.Parameters.AddRange(pams);

            //        //打开连接
            //        con.Open();
            //        //连线式访问数据库
            //        using (SqlDataReader reader = com.ExecuteReader())
            //        {
            //            //如果游标有数据行，说明根据用户名和密码查询到了数据，登录成功
            //            if (reader.HasRows)
            //            {
            //                //Read()进行下一条记录,使游标前进一行，拿到登录用户的数据行
            //                if (reader.Read())
            //                {
            //                    string userName = reader["UserName"].ToString();
            //                    Session["UserName"] = userName;
            //                    Response.Redirect("开票界面.aspx");
            //                }
            //            }
            //            else
            //            {
            //                labInfo.Visible = true;
            //                labInfo.Text = "输入的账号或密码有误，请重新输入！";
            //            }
            //            con.Close();
            //        }
            //    }
            //}
            #endregion

            #region Login.登录页面.ExecuteScalar查询
            ////获取用户名和密码
            //string name = txtName.Text.Trim();
            //string pwad = txtPwad.Text;

            ////声明数据库连接对象
            //string StrCon = "Data Source=.;Initial Catalog=master;Integrated Security=True";

            ////声明sql语句
            //string sql = "select count(UserID) from [User] where Account=@Account and Password=@Password";

            //SqlParameter[] pams = {
            //    new SqlParameter("@Account", name),
            //    new SqlParameter("@Password",pwad)
            //};

            ////创建sqlconnection对象
            //using (SqlConnection con = new SqlConnection(StrCon))
            //{
            //    //创建sqlcommand
            //    using (SqlCommand com = new SqlCommand(sql, con))
            //    {
            //        //AddRange是指多个对象
            //        com.Parameters.AddRange(pams);

            //        //打开连接
            //        con.Open();

            //        //执行操作
            //        int result = Convert.ToInt32(com.ExecuteScalar());
            //        con.Close();
            //        if (result > 0)
            //        {
            //            Session["id"] = txtName.Text;
            //            Response.Redirect("开票界面.aspx");
            //        }
            //        else
            //        {
            //            labInfo.Visible = true;
            //            labInfo.Text = "输入的账号或密码有误，请重新输入！";
            //        }
            //        con.Close();
            //    }
            //}
            #endregion
        }
    }
}